Monter un serveur DNS

DNS (Domain Name System) est le protocole qui permet de faire la correspondance entre une adresse IP et le nom de domaine, ou nom DNS, du type www.debian.org.

Installer le serveur DNS

Plusieurs serveur DNS sont disponibles dans la Debian ; je vous propose d'installer le serveur DNS de référence, BIND (Berkeley Internet Name Domain) de l'Internet Software Consortium dans sa version 9 :

# apt-get install bind9

Configurer le serveur DNS

Les fichiers de configuration

Les fichiers de configuration de Bind se trouvent dans le répertoire /etc/bind/. On y trouve notamment le fichier db.root, qui contient les adresses IP des serveurs DNS racines, et le fichier named.conf qui est le fichier de configuration principal de Bind.

Le répertoire /var/cache/bind/ est destiné à accueillir les fichiers de zone pour ceux qui veulent configurer un serveur DNS primaire ou secondaire.

onfigurer un serveur indépendant

Par défaut, Bind est configuré en tant que serveur DNS "indépendant", qui n'est primaire ou secondaire pour aucun domaine. Quel est l'intérêt d'un tel serveur ? Faire office de cache DNS. En effet, le serveur DNS va retenir dans son cache les correspondances IP-DNS demandées par les clients, et ne sera pas obligé d'aller chercher à chaque fois auprès des autres serveurs DNS la réponse aux requêtes.

Par exemple, si vous trouvez que le serveur DNS de votre fournisseur d'accès est trop long à répondre, vous aurez intérêt à installer un serveur DNS sur votre ordinateur et configurer votre système pour qu'il interroge en priorité le serveur local. Pour optimiser les temps de requêtes, configurez votre serveur DNS pour qu'il demande les enregistrements qu'il n'a pas dans son cache aux serveurs DNS de votre fournisseur d'accès au lieu d'aller les demander lui-même auprès des autres serveurs DNS.

Pour cela, éditez le fichier named.conf et décommentez les lignes de la sous-section forwarders de la section options en y inscrivant les adresses IPs des serveurs DNS de votre fournisseur d'accès. Le début du fichier named.conf ressemble alors à cela :

options {

directory "/var/cache/bind";

forwarders {

48.128.12.41;

48.128.12.42;

};

auth-nxdomain no; };

48.128.12.41 et 48.128.12.42 sont les adresses IPs des serveurs DNS de votre fournisseur d'accès.

Enfin, modifiez le fichier /etc/resolv.conf et mettez votre serveur en première position dans la liste des serveurs DNS :

search liste_de_domaines_pour_les_noms_DNS_dont_le_domaine_n'est_pas_précisé

nameserver 127.0.0.1

nameserver 48.128.12.41

nameserver 48.128.12.42

Configurer un serveur DNS primaire pour une zone

Vous avez acheté un nom de domaine et vous souhaitez héberger votre DNS primaire ? Il vous faut configurer votre Bind comme autoritaire (ou master) pour votre domaine et donner à l'organisme auquel vous avez acheté votre domaine l'adresse IP de votre serveur.

Modification de named.conf

Ajoutez à la fin du fichier named.conf les lignes suivantes :

zone "mondomaine.org" {

type master;

file "mondomaine.org.zone";

};

où :

Ecriture du fichier de zone

C'est de loin la partie la plus difficile ! J'ai récupéré un fichier de configuration type largement commenté qui pourra vous servir comme base de travail pour écrire votre propre fichier de zone :

# cp ~lien avec le ficgier texte dans le rep linux

ou :

% wget lien avec le fichier dans le rep linux

# mv mondomaine.org.zone /var/cache/bind/

Vérifications et relance

Vérifiez que vous n'avez pas fait d'erreur de syntaxe dans le fichier named.conf :

% named-checkconf

Si la commande n'affiche rien, c'est que le fichier named.conf est valide. Ensuite, vérifiez la syntaxe du fichier de zone :

% named-checkzone mondomaine.org /var/cache/bind/mondomaine.org.zone

zone mondomaine.org/IN: loaded serial 2003050102

OK

Si la commande n'affiche aucun message d'erreur, alors il n'y a pas d'erreur de syntaxe dans le fichier de zone. Vous pouvez alors dire à Bind de relire son fichier de configuration :

# /etc/init.d/bind9 reload

 

Attention, si vous faites un restart au lieu d'un reload, le cache de votre serveur DNS se videra !

Configurer un serveur secondaire pour une zone

Un ami vous a demandé de faire office de serveur DNS secondaire pour son domaine ? Vous avez accepté ? Il ne reste plus qu'à configurer votre Bind !

Modification de named.conf

Rajoutez à la fin du fichier named.conf les lignes suivantes :

zone "domaine-ami.org" {

type slave; file "domaine-ami.org.zone";

masters { 12.42.112.242; };

};

où :

Vérification et relance

Vérifiez que vous n'avez pas fait d'erreur de syntaxe dans le fichier named.conf :

% named-checkconf

Si la commande n'affiche rien, c'est que le fichier est valide. Vous pouvez alors dire à Bind de relire son fichier de configuration :

# /etc/init.d/bind9 reload

Votre serveur DNS fera alors régulièrement des transferts de zone depuis le serveur primaire (et notamment à chaque fois que le serveur primaire lui notifiera d'un changement dans la zone) et l'écrira dans le fichier /var/cache/bind/domaine-ami.org.zone.

Tester le serveur DNS

L'utilitaire dig permet de faire des requêtes DNS évoluées et fournit un maximum d'informations sur la requête. Il est très utile pour vérifier la bonne configuration d'un serveur DNS.

Exemples d'utilisation de dig :

% dig @12.42.112.242 www.mondomaine.org A
% dig @12.42.112.242 mondomaine.org MX
% dig @12.42.112.242 mondomaine.org ANY
% dig @12.42.112.242 mondomaine.org AXFR
% dig @12.42.112.242 -x 12.42.111.422

La sortie de la commande dig est très détaillée ; la réponse à la requête (la partie qui vous intéressera le plus !) se trouve en dessous de la ligne suivante :

;; ANSWER SECTION: